Aspects of the present invention relate in general to cloud computing systems and more particularly, to allocating the placement of software application components throughout a cloud computing system.
A cloud computing system is a group of autonomous computing systems connected to each other through a network such as the Internet. In such a system, the processing resources of the constituent computing systems may be dynamically scalable and often virtualized. A virtual resource is a piece of software designed to emulate a piece of hardware. The use of virtual resources may increase the efficiency of a cloud computing system, since details relating to the implementation of software applications running on the system and the hardware that supports them may be delegated among the computing systems in the cloud computing system and abstracted to the end user. In such a system, a user may access computer applications through the network and have it appear as though the application is running on his or her local machine.
The execution of software applications in a cloud computing system is often performed by a number of application servers. Each application server maintains its own physical processing resources, including one or more processors and memory. These resources may be configured to process application request from client systems connected to the network. Due to the complex nature of the implementation details in cloud computing systems, it may be difficult to effectively and dynamically manage the allocation of computing resources in a cloud computing system among the various tasks associated with executing software applications.